package com.yhb.hash.dao;

import org.apache.commons.dbcp2.BasicDataSource;

import javax.sql.DataSource;

public class DBCPDataSource {
    private static DataSource dataSource;
    private DBCPDataSource(){}
    //提供一个静态的获取该类的实例对象的方法入口
    public static synchronized DataSource getDataSource(){
        //静态的单例变量的初始化
        if (dataSource==null){
            // 数据库的驱动类的名字 包路径名
            String strDriverName4Mysql8 = "com.mysql.cj.jdbc.Driver";
            String strDriverName4Mysql5 = "com.mysql.jdbc.Driver";
            String strDriverName4Oracle = "oracle.jdbc.driver.OracleDriver";

            // 数据库服务器的连接串
            // 连接串中的 localhost 127.0.0.1 ip地址 服务器名 表示服务器的访问路径  3306 mysql数据库服务器监听的端口号
            String strURL4Mysql8 = "jdbc:mysql://localhost:3306/test2021111?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong&allowPublicKeyRetrieval=true";
            String strURL4Mysql5 = "jdbc:mysql://localhost:3306/test2021111?useUnicode=true&characterEncoding=utf8";
            String strURL4Oracle = "jdbc:oracle:thin:@localhost:1521:orcl"; // orcl 表示Oracle数据库安装的实例名，默认是orcl，如果不是默认，则改成自己的

            // 登录数据库的用户名和密码
            String strUserName = "root";
            String strUserPsw = "111111";

            //第一次获取实例对象时，需要初始化操作
            BasicDataSource basicDataSource=new BasicDataSource();
            basicDataSource.setUrl(strURL4Mysql8);
            basicDataSource.setDriverClassName(strDriverName4Mysql8);
            basicDataSource.setUsername(strUserName);
            basicDataSource.setPassword(strUserPsw);

            dataSource=basicDataSource;
        }
        //返回单例模式对象
        return dataSource;
    }
}
